package com.yida.gwj.basis.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.yida.gwj.common.domain.GwjBaseBuild;
import com.yida.gwj.common.domain.GwjBaseCommunity;
import com.yida.gwj.common.domain.GwjBaseOwner;
import com.yida.gwj.common.domain.dto.GwjBaseHouseDTO;
import com.yida.gwj.common.domain.request.GwjBaseHouseRequest;
import com.yida.gwj.common.domain.request.GwjBaseOwnerRequest;

/**
 * 自建楼栋业务处理
 * 
 * @author hmh
 *
 */
public interface IGwjBaseSelfBuiltHousesBusinessService {

    /**
     * 查询基础数据（小区信息）列表
     * 
     * @param baseCommunity 基础项目
     * @return 集合
     */
    public List<GwjBaseCommunity> selectGwjBaseCommunityList(GwjBaseCommunity baseCommunity);

    /**
     * 查询基础数据（楼栋信息）列表
     * 
     * @param baseBuild 基础楼栋
     * @return 集合
     */
    // public List<BaseBuild> selectGwjCommBuildList(BaseBuild baseBuild);
    public List<GwjBaseBuild> selectGwjBaseBuildList(GwjBaseBuild baseBuild);

    /**
     * 查询基础数据（房屋信息）列表
     * 
     * @param houseRequest 基础房屋
     * @return 集合
     */
    public List<GwjBaseHouseDTO> queryGwjBaseHouseListByParam(GwjBaseHouseRequest houseRequest);

    /**
     * 查询基础数据（业主信息）列表
     * 
     * @param ownerRequest 基础业主
     * @return 集合
     */
    public List<GwjBaseOwner> selectGwjBaseOwnerList(GwjBaseOwnerRequest ownerRequest);

    /**
     * 导入基础项目
     * 
     * @param baseCommunity 基础项目
     * @return
     * @throws Exception
     */
    // public String importBaseCommunity(MultipartFile file, boolean updateSupport) throws Exception;
    public String importBaseCommunity(MultipartFile file, boolean updateSupport) throws Exception;

    /**
     * 导入基础楼栋
     * 
     * @param baseCommunity 基础楼栋
     * @return
     * @throws Exception
     */
    public String importDataBuild(MultipartFile file, boolean updateSupport, Long BaseCommunityId) throws Exception;

    /**
     * 导入基础房屋和业主
     * 
     * @param baseCommunity 基础房屋
     * @return
     */
    public String importDataHouseAndOwner(MultipartFile file, boolean updateSupport, Long[] buildIds) throws Exception;

    /**
     * 基于项目ID导入基础房屋和业主
     * 
     * @param baseCommunity 基础房屋
     * @return
     */
    public String importDataHouseAndOwner(MultipartFile file, boolean updateSupport, Long communityId) throws Exception;

    /**
     * 20230802
     * 
     * 基于项目ID导入基础房屋和业主
     * 
     * @param file 文件对象
     * @param updateSupport 是否更新
     * @param communityId 项目ID
     * @param buildCode 楼栋编号
     * @return
     * @throws Exception
     */
    public String importDataHouseAndOwner(MultipartFile file, boolean updateSupport, Long areaId, Long communityId, String buildCode) throws Exception;

    /**
     * 批量删除项目
     * 
     * @param communityIds
     * @return
     */
    public int removeCommunitys(Long[] communityIds);

    /**
     * 批量删除楼栋
     * 
     * @param communityIds
     * @return
     */
    public int removeBuilds(String[] buildCodes);

    /**
     * 批量删除房屋
     * 
     * @param communityIds
     * @return
     */
    public int removeHouses(String[] houseCodes);
}
